/*
 * TarifaNodoDAO.java
 *
 * Created on 16 de mayo de 2007, 05:53 PM
 *
 * To change this template, choose Tools | Options and locate the template under
 * the Source Creation and Management node. Right-click the template and choose
 * Open. You can then make changes to the template in the Source Editor.
 */

package com.src.computec.facturacion.tarifas.dao;

import com.src.computec.facturacion.base.constantes.ConstantesGenerales;
import com.src.computec.facturacion.tarifas.dto.TarifaNodoDto;
import com.src.computec.radar.base.dao.GenericDAO;
import com.src.computec.radar.base.dao.exception.DAOException;
import com.sun.org.apache.bcel.internal.classfile.Deprecated;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * 
 * @author Fabio Sanchez
 */
public class TarifaNodoDAO extends GenericDAO implements BaseTarifaNodoDAO  {
    
    private ConstantesGenerales constantesGenerales;
    private String SCHEMA;
    
    /** Creates a new instance of TarifaNodoDAO */
    public TarifaNodoDAO() {
        constantesGenerales = ConstantesGenerales.getInstance();
        SCHEMA = constantesGenerales.SCHEMA;
    }
    
    
    /**
     * Retorna una lista de todos los registros de la tabla TARIFA_NODO
     * @return Lista de TarifaNodoDto
     * @throws com.src.computec.radar.base.dao.exception.DAOException 
     */
    public List getAllTarifaNodos() throws DAOException{
        List retornoLst = new ArrayList();
        Connection con = null;
        PreparedStatement statement = null;
        ResultSet rs = null;
        
        try {
            con = getConnectionDB2();           


            statement = con.prepareStatement("SELECT CODIGO_TIPO_TARIFA,CODIGO_NODO,CODIGO_DEPARTAMENTO,CODIGO_MUNICIPIO,CODIGO_CENTROP,VALOR FROM " + SCHEMA + ".TARIFA_NODO ORDER BY CODIGO_NODO ");            
            rs = statement.executeQuery();
            
            while (rs.next()) 
            {
                int indice1 = 0;
                TarifaNodoDto dto = new TarifaNodoDto();
                dto.setCodigoTipoTarifa(new Integer(rs.getInt(++indice1)));
                dto.setCodigoNodo(new Integer(rs.getInt(++indice1)));
                dto.setCodigoDepartamento(new Integer(rs.getInt(++indice1)));
                dto.setCodigoMunicipio(new Integer(rs.getInt(++indice1)));
                dto.setCodigoCentroPoblado(new Integer(rs.getInt(++indice1)));
                dto.setValor(new Double(rs.getDouble(++indice1)));                
                retornoLst.add(dto);
            }
        } 
        catch (SQLException e) 
        {
            throw new DAOException("TarifaNodoDAO:getTarifaXNodo: " + e.toString(), e);
        }
        finally 
        {
            closeConnection(con, statement, rs);
        }
        return retornoLst;
    }
    
    
     /**
     * Retorna una lista para un NODO y un Tipo de Tarifa determinado de la tabla TARIFA_NODO 
     * adicionalmente trae Nombre de departamento,Nombre de Municipio y Nombre de Centro Poblado
     * @return Lista de TarifaNodoDto
     * @param pNodo El codigo del Nodo a filtrar
     * @param pTipoTarifa El codigo del tipo de tarifa
     * @throws com.src.computec.radar.base.dao.exception.DAOException 
     */
    public List getTarifaByNodos(String pNodo,String pTipoTarifa) throws DAOException{
        List retornoLst = new ArrayList();
        Connection con = null;
        PreparedStatement statement = null;
        ResultSet rs = null;
        
        try {
            con = getConnectionDB2();           


            statement = con.prepareStatement("SELECT T.CODIGO_TIPO_TARIFA,T.CODIGO_NODO,T.CODIGO_DEPARTAMENTO,T.CODIGO_MUNICIPIO,T.CODIGO_CENTROP,T.VALOR,D.NOMBRE_DEPARTAMENTO,M.NOMBRE_MUNICIPIO,C.NOMBRE_CENTRO_POBLADO FROM "+SCHEMA+".TARIFA_NODO T"
                                                +" inner join "+SCHEMA+".DEPARTAMENTO D on D.CODIGO_DEPARTAMENTO = T.CODIGO_DEPARTAMENTO"
                                                +" inner join "+SCHEMA+".MUNICIPIO M on (M.CODIGO_DEPARTAMENTO=T.CODIGO_DEPARTAMENTO and M.CODIGO_MUNICIPIO=T.CODIGO_MUNICIPIO)"
                                                +" inner join "+SCHEMA+".CENTRO_POBLADO C on (C.CODIGO_CENTROP=T.CODIGO_CENTROP and C.CODIGO_DEPARTAMENTO=T.CODIGO_DEPARTAMENTO and C.CODIGO_MUNICIPIO=T.CODIGO_MUNICIPIO)"
                                                +" where T.CODIGO_NODO=? and  T.CODIGO_TIPO_TARIFA=?"); 
            
            statement.setObject(1, pNodo);
            statement.setObject(2, pTipoTarifa);
            rs = statement.executeQuery();
            
            while (rs.next()) 
            {
                int indice1 = 0;
                TarifaNodoDto dto = new TarifaNodoDto();
                dto.setCodigoTipoTarifa(new Integer(rs.getInt(++indice1)));
                dto.setCodigoNodo(new Integer(rs.getInt(++indice1)));
                dto.setCodigoDepartamento(new Integer(rs.getInt(++indice1)));
                dto.setCodigoMunicipio(new Integer(rs.getInt(++indice1)));
                dto.setCodigoCentroPoblado(new Integer(rs.getInt(++indice1)));
                dto.setValorEntero(new Integer(new Double(rs.getString(++indice1)).intValue()));        
                dto.setDepartamento(rs.getString(++indice1));
                dto.setMunicipio(rs.getString(++indice1));
                dto.setCentroPoblado(rs.getString(++indice1));
                String codDepDANE=dto.getCodigoDepartamento().intValue()/10==0?"0"+dto.getCodigoDepartamento().intValue():""+dto.getCodigoDepartamento().intValue();
                String codMunDANE=dto.getCodigoMunicipio().intValue()/100==0?(dto.getCodigoMunicipio().intValue()/10==0?"00"+dto.getCodigoMunicipio().intValue():"0"+dto.getCodigoMunicipio().intValue()):""+dto.getCodigoMunicipio().intValue();
                String codCentroPobladoDANE=dto.getCodigoCentroPoblado().intValue()/100==0?(dto.getCodigoCentroPoblado().intValue()/10==0?"00"+dto.getCodigoCentroPoblado().intValue():"0"+dto.getCodigoCentroPoblado().intValue()):""+dto.getCodigoCentroPoblado().intValue();
                dto.setCodigoDane(codDepDANE+codMunDANE+codCentroPobladoDANE);
                retornoLst.add(dto);
            }
        } 
        catch (SQLException e) 
        {
            throw new DAOException("TarifaNodoDAO:getTarifaByNodo: " + e.toString(), e);
        }
        finally 
        {
            closeConnection(con, statement, rs);
        }
        return retornoLst;
    }
    
    
    /**
     * Retorna el valor de un tipo de tarifa para los filtros seleccionados     
     * @return String valor de la tarifa
     * @param pFilters Lista de los filtros (CODIGO_TIPO_TARIFA, CODIGO_NODO, CODIGO_DEPARTAMENTO, CODIGO_MUNICIPIO y CODIGO_CENTROP)
     * @throws com.src.computec.radar.base.dao.exception.DAOException 
     */
    
    public String getTarifaByMunCentroP(List pFilters) throws DAOException{
        String valorRet="-1";
        Connection con = null;
        PreparedStatement statement = null;
        ResultSet rs = null;
        
        try {
            con = getConnectionDB2();           


            statement = con.prepareStatement("SELECT VALOR FROM "+SCHEMA+".TARIFA_NODO WHERE CODIGO_TIPO_TARIFA=? AND CODIGO_NODO=? AND CODIGO_DEPARTAMENTO =? AND CODIGO_MUNICIPIO=? AND CODIGO_CENTROP=?");            
            
            int indice = 0;
            statement.setObject(1,(String)pFilters.get(indice));
            statement.setObject(2,(String)pFilters.get(++indice));
            statement.setObject(3,(String)pFilters.get(++indice));
            statement.setObject(4,(String)pFilters.get(++indice));
            statement.setObject(5,(String)pFilters.get(++indice));
            
            rs = statement.executeQuery();  
            while (rs.next()) 
            {
                valorRet=new Integer(new Double(rs.getString(1)).intValue()).toString();                           
            }
        } 
        catch (SQLException e) 
        {
            e.printStackTrace();
            throw new DAOException("TarifaNodoDAO:getTarifaByMunCentroP: " + e.toString(), e);
        }
        finally 
        {
            closeConnection(con, statement, rs);
        }
        return valorRet;        
    }

    /**
     * Actualiza el valor de una tarifa para los filtros seleccionados
     * @param pFilters Lista de los filtros (CODIGO_TIPO_TARIFA, CODIGO_NODO, CODIGO_DEPARTAMENTO, CODIGO_MUNICIPIO y CODIGO_CENTROP)
     * @throws com.src.computec.radar.base.dao.exception.DAOException 
     */
    public void updateTarifaNodo(List pFilters) throws DAOException{
        int retUpdateReg_=0;
        Connection con_ = null;
        PreparedStatement statement_ = null;
         try {
            con_ = getConnectionDB2();           
            statement_ = con_.prepareStatement("UPDATE "+SCHEMA+".TARIFA_NODO SET VALOR=? WHERE CODIGO_TIPO_TARIFA=? AND CODIGO_NODO=? AND CODIGO_DEPARTAMENTO =? AND CODIGO_MUNICIPIO=? AND CODIGO_CENTROP=?");            
            int indice = 0;
            
            statement_.setObject(2,(String)pFilters.get(indice));
            statement_.setObject(3,(String)pFilters.get(++indice));
            statement_.setObject(4,(String)pFilters.get(++indice));
            statement_.setObject(5,(String)pFilters.get(++indice));
            statement_.setObject(6,(String)pFilters.get(++indice));
            statement_.setObject(1,(String)pFilters.get(++indice));
            
            retUpdateReg_=statement_.executeUpdate();  
         }catch (SQLException e){
            e.printStackTrace();
            throw new DAOException("TarifaNodoDAO:updateTarifaNodo: " + e.toString(), e);
        }
        finally 
        {
            closeConnection(con_, statement_);
        }
    }
    
     /**
     * Actualiza el valor de una tarifa y un nodo especifico para todos los codigos DANE suministrados en la lista pTarifas
     * @param pTarifas Lista de TarifaNodoDto con los codigos DANE y valor de la tarifa a actualizar unicamente.
     * @param pCodTipoTarifa Codigo de la tarifa a actualizar
     * @param pCodNodo Codigo del nodo a actualizar
     * @throws com.src.computec.radar.base.dao.exception.DAOException 
     */
    public int[] updateAllTarifaNodo(List pTarifas,String pCodTipoTarifa,String pCodNodo) throws DAOException{
       
        Connection con_ = null;
        PreparedStatement statement_ = null;
        PreparedStatement insertStatement_ = null;
        int inserts_=0;
        int updates_=0;
         try {
            con_ = getConnectionDB2();           
            statement_ = con_.prepareStatement("UPDATE "+SCHEMA+".TARIFA_NODO SET VALOR=? WHERE CODIGO_TIPO_TARIFA=? AND CODIGO_NODO=? AND CODIGO_DEPARTAMENTO =? AND CODIGO_MUNICIPIO=? AND CODIGO_CENTROP=?");            
            insertStatement_=con_.prepareStatement("INSERT INTO "+SCHEMA+".TARIFA_NODO (CODIGO_TIPO_TARIFA,CODIGO_NODO,CODIGO_DEPARTAMENTO,CODIGO_MUNICIPIO,CODIGO_CENTROP,VALOR) VALUES (?,?,?,?,?,?)");
            for(Iterator iter_=pTarifas.iterator();iter_.hasNext();){
                TarifaNodoDto dto_=(TarifaNodoDto)iter_.next();
                //CODIGO DANE 	
                if(dto_.getCodigoDane()!=null && !dto_.getCodigoDane().trim().equals("")){
                    int cod_=Integer.valueOf(dto_.getCodigoDane()).intValue();
                    Integer codDep_=cod_/1000000;
                    Integer codMun_=(cod_%1000000)/1000;
                    Integer codCentroP_=((cod_%1000000)%1000);
                   
              
                    //Actualizacion de los que existen
                    statement_.setObject(1,new Double(dto_.getValorEntero()));
                    statement_.setObject(2,Integer.valueOf(pCodTipoTarifa));
                    statement_.setObject(3,Integer.valueOf(pCodNodo));
                    statement_.setObject(4,Integer.valueOf(codDep_));
                    statement_.setObject(5,Integer.valueOf(codMun_));
                    statement_.setObject(6,Integer.valueOf(codCentroP_));
                    int updaterows_=statement_.executeUpdate();           
                    updates_=updates_+(updaterows_>0?1:0);
                   
                   if(updaterows_==0){
                    try{
                        //Insercion de los que no existen
                        insertStatement_.setObject(1,Integer.valueOf(pCodTipoTarifa));
                        insertStatement_.setObject(2,Integer.valueOf(pCodNodo));
                        insertStatement_.setObject(3,Integer.valueOf(codDep_));
                        insertStatement_.setObject(4,Integer.valueOf(codMun_));
                        insertStatement_.setObject(5,Integer.valueOf(codCentroP_));
                        insertStatement_.setObject(6,new Double(dto_.getValorEntero()));
                        insertStatement_.execute();           
                        inserts_++;
                    }catch(SQLException ex2){
                        System.out.println("Insert Exception");
                    }
                   }
                }                
            }         
         }catch (SQLException e){
            e.printStackTrace();
            throw new DAOException("TarifaNodoDAO:updateAllTarifaNodo: " + e.toString(), e);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        finally 
        {
            closeConnection(null,insertStatement_);
            closeConnection(con_, statement_);            
        }
        int[] ret_={updates_,inserts_};
        return ret_;
    }
    
    /**
     * Inserta un nuevo Tipo de tarifa en la tabla TIPO_TARIFA y su asociocion correspondiente en la tabla TARIFA_NODO para todos los codigos DANE y nodos existentes
     * @return <code>true</code> Si la tarifa ya existe y no realiza la insercion
     *         <code>false</code> Si la tarifa no existe y realiza la insercion
     * @param pDescripcion Descripcion de la tarifa a insertar
     * @throws com.src.computec.radar.base.dao.exception.DAOException 
     * 
     */
   /* public boolean insertTipoTarifa(String pDescripcion) throws DAOException {
        int retInsertReg_=0;
        
        Connection con_ = null;
        
        PreparedStatement statement_ = null;
        PreparedStatement insertStatement_ = null;
        PreparedStatement selectStatement_ = null;
        String selectQuery_=null;
        ResultSet rs = null;
        
        String nextId_=null;
        
        boolean existe_=false;
         try {
            con_ = getConnectionDB2();      
                        
            //Validar si ya existe la descripcion en la tabla tipo tarifa
            
            selectStatement_=con_.prepareStatement("SELECT COUNT(*) FROM "+SCHEMA+".TIPO_TARIFA T WHERE T.DESCRIPCION LIKE ?");
            selectStatement_.setObject(1,pDescripcion);
            rs=selectStatement_.executeQuery();            
            int count_=0;
            while (rs.next()){
               count_=new Integer(rs.getString(1)).intValue();
            }
            if(count_>0){
               existe_=true;
               return existe_;
            }
            
            //Obtener el siguiente id para la insercion del nuevo tipo de tarifa
            nextId_=this.getNextId(con_,SCHEMA+".TIPO_TARIFA","CODIGO_TIPO_TARIFA");

            
            statement_ = con_.prepareStatement("INSERT INTO "+SCHEMA+".TIPO_TARIFA (CODIGO_TIPO_TARIFA,DESCRIPCION) VALUES (?,?)");                                 
            statement_.setObject(1,nextId_);
            statement_.setObject(2,pDescripcion);                  
            retInsertReg_=statement_.executeUpdate();  
            
            //Insercion en TARIFA_NODO de todos los COD_DANE con todos los NODOS para el nuevo tipo de tarifa
            insertStatement_=con_.prepareStatement("INSERT INTO "+SCHEMA+".TARIFA_NODO SELECT "+nextId_+",ND.CODIGO_NODO,C.CODIGO_DEPARTAMENTO,C.CODIGO_MUNICIPIO,C.CODIGO_CENTROP,0 FROM "+SCHEMA+".CENTRO_POBLADO C,"+SCHEMA+".NODO_DISTRIBUCION ND");            
            retInsertReg_=insertStatement_.executeUpdate();
            
         }catch (SQLException e){
            e.printStackTrace();
            throw new DAOException("TarifaNodoDAO:insertTipoTarifa: " + e.toString(), e);
        }
        finally 
        {
            closeConnection(null, statement_);
            closeConnection(null, insertStatement_);
            closeConnection(con_, selectStatement_,rs);
         
        }
        return existe_;
    }*/
    
    
     /**
     * Inserta un nuevo Tipo de tarifa en la tabla TIPO_TARIFA
     * @return <code>true</code> Si la tarifa ya existe 
     *         <code>false</code> Si la tarifa no existe
     * @param pDescripcion Descripcion de la tarifa a insertar
     * @throws com.src.computec.radar.base.dao.exception.DAOException 
     */
    public boolean insertTipoTarifa(String pDescripcion) throws DAOException{
        Connection con_ = null;
        
        PreparedStatement statement_ = null;    
        PreparedStatement selectStatement_ = null;
        String selectQuery_=null;
        ResultSet rs = null;
        String nextId_=null;
        
        boolean existe_=false;
         try {
            con_ = getConnectionDB2();      
                        
            //Validar si ya existe la descripcion en la tabla tipo tarifa
            
            selectStatement_=con_.prepareStatement("SELECT COUNT(*) FROM "+SCHEMA+".TIPO_TARIFA T WHERE T.DESCRIPCION LIKE ?");
            selectStatement_.setObject(1,pDescripcion.trim());
            rs=selectStatement_.executeQuery();            
            int count_=0;
            while (rs.next()){
               count_=new Integer(rs.getString(1)).intValue();
            }
            if(count_>0){
               existe_=true;
               return existe_;
            }
            
            //Obtener el siguiente id para la insercion del nuevo tipo de tarifa
            nextId_=this.getNextId(con_,SCHEMA+".TIPO_TARIFA","CODIGO_TIPO_TARIFA");

            
            statement_ = con_.prepareStatement("INSERT INTO "+SCHEMA+".TIPO_TARIFA (CODIGO_TIPO_TARIFA,DESCRIPCION) VALUES (?,?)");                                 
            statement_.setObject(1,nextId_);
            statement_.setObject(2,pDescripcion);                  
            statement_.executeUpdate();  
            
         }catch(SQLException ex){
            ex.printStackTrace();
            throw new DAOException("TarifaNodoDAO:insertTipoTarifa: " + ex.toString(), ex);
         }finally{
            closeConnection(null, statement_);
            closeConnection(con_, selectStatement_,rs);         
        }
        return existe_;
    }
    
    
    /**
     * Inserta un nuevo Nodo en la tabla TARIFA_NODO con asociocion a todas los tipos de tarifas
     * @return <code>true</code> Si el nodo ya existe y no se realiza la insercion
     * <code>false</code> Si el nodo no existe y realiza la insercion
     * @param pNodo Codigo del Nodo a insertar
     * @throws com.src.computec.radar.base.dao.exception.DAOException 
     */
    public boolean insertAllNodoIntoTarifaNodo(String pNodo) throws DAOException{
        int retInsertReg_=0;
        Connection con_ = null;
        
        PreparedStatement insertStatement_ = null;
        PreparedStatement selectStatement_ = null;
        String selectQuery_=null;
        ResultSet rs = null;
        String nextId_=null;
        boolean existe_=false;
         try {
            con_ = getConnectionDB2();               
            //Validar si ya existe en la tabla TARIFA NODO
            
            selectStatement_=con_.prepareStatement("SELECT COUNT(*) FROM PRODRAD.TARIFA_NODO T WHERE T.CODIGO_NODO=?");
            selectStatement_.setObject(1,pNodo);
            rs=selectStatement_.executeQuery();            
            int count_=0;
            while (rs.next()){
               count_=new Integer(rs.getString(1)).intValue();
            }
            if(count_>0){
               existe_=true;
               return existe_;
            }            
            
            //Insercion en TARIFA_NODO de todos los COD_DANE con un nuevo NODO para todas las tarifas existentes
            insertStatement_=con_.prepareStatement("INSERT INTO "+SCHEMA+".TARIFA_NODO SELECT TT.CODIGO_TIPO_TARIFA,"+pNodo+",C.CODIGO_DEPARTAMENTO,C.CODIGO_MUNICIPIO,C.CODIGO_CENTROP,0 FROM "+SCHEMA+".CENTRO_POBLADO C,"+SCHEMA+".TIPO_TARIFA TT");            
            retInsertReg_=insertStatement_.executeUpdate();
            
            
         
         }catch (SQLException e){
            e.printStackTrace();
            throw new DAOException("TarifaNodoDAO:insertAllNodoIntoTarifaNodo: " + e.toString(), e);
        }
        finally 
        {
            closeConnection(null,selectStatement_, rs);
            closeConnection(con_, insertStatement_);
        }
        return existe_;
    }
    
    
    /**
      * Inserta un nuevo registro con el codigo del nodo y tipo de tarifa en la tabla TARIFA_NODO con los valores requeridos
      * @param pFilters Lista de los filtros necesarios para la insercion (CODIGO_TIPO_TARIFA,CODIGO_NODO,CODIGO_DEPARTAMENTO,CODIGO_MUNICIPIO,CODIGO_CENTROP,VALOR)
      * @throws com.src.computec.radar.base.dao.exception.DAOException 
      */
     public void insertNodoIntoTarifaNodo(List pFilters) throws DAOException{
        int retUpdateReg_=0;
        Connection con_ = null;
        PreparedStatement statement_ = null;
         try {
            con_ = getConnectionDB2();           
            //INSERT INTO PRODRAD.TARIFA_NODO VALUES(6,0,5,1,2,0.00)
            statement_ = con_.prepareStatement("INSERT INTO "+SCHEMA+".TARIFA_NODO VALUES (?,?,?,?,?,?)");            
            int indice = 0;
            
            statement_.setObject(1,(String)pFilters.get(indice));
            statement_.setObject(2,(String)pFilters.get(++indice));
            statement_.setObject(3,(String)pFilters.get(++indice));
            statement_.setObject(4,(String)pFilters.get(++indice));
            statement_.setObject(5,(String)pFilters.get(++indice));
            statement_.setObject(6,(String)pFilters.get(++indice));
            
            retUpdateReg_=statement_.executeUpdate();  
         }catch (SQLException e){
            e.printStackTrace();
            throw new DAOException("TarifaNodoDAO:updateTarifaNodo: " + e.toString(), e);
        }
        finally 
        {
            closeConnection(con_, statement_);
        }
    }
   
    /**
     * Inserta un nuevo Nodo en la tabla TARIFA_NODO con asociocion a todas los tipos de tarifas
     * @return Numero de registros insertados
     * @param pNodo Codigo del Nodo a insertar
     * @throws com.src.computec.radar.base.dao.exception.DAOException 
     */
    public int insertTryNodoIntoTarifaNodo(String pNodo) throws DAOException{
        int retUpdateReg_=0;
        Connection con1_ = null;
        
        PreparedStatement selectStatement_ = null;
        PreparedStatement statement_ = null;
        ResultSet rsMain = null;        
                   
        try {
            con1_ = getConnectionDB2();       
            
            String query_="SELECT TT.CODIGO_TIPO_TARIFA,"+pNodo+",C.CODIGO_DEPARTAMENTO,C.CODIGO_MUNICIPIO,C.CODIGO_CENTROP,0 FROM PRODRAD.CENTRO_POBLADO C,PRODRAD.TIPO_TARIFA TT";
            selectStatement_ = con1_.prepareStatement(query_);
            rsMain = selectStatement_.executeQuery();
            
            statement_ = con1_.prepareStatement("INSERT INTO "+SCHEMA+".TARIFA_NODO VALUES (?,?,?,?,?,?)");            
            
            while(rsMain.next()){
                
                int indice = 0;

                try{
                    statement_.setObject(1,(String)rsMain.getString(++indice));
                    statement_.setObject(2,(String)rsMain.getString(++indice));
                    statement_.setObject(3,(String)rsMain.getString(++indice));
                    statement_.setObject(4,(String)rsMain.getString(++indice));
                    statement_.setObject(5,(String)rsMain.getString(++indice));
                    statement_.setObject(6,(String)"0");
                    retUpdateReg_=statement_.executeUpdate();  
                }catch(SQLException ex){

                }
            }           

         }catch (SQLException e){
            e.printStackTrace();
            throw new DAOException("TarifaNodoDAO:insertTryNodoIntoTarifaNodo: " + e.toString(), e);
        }
        finally 
        {
            closeConnection(null,statement_); 
            closeConnection(con1_,selectStatement_, rsMain);     
            return retUpdateReg_;
        }
    }

    
     /**
     * Elimina una tarifa y un nodo especifico para los codigos DANE suministrados en la lista pTarifas
     * @param pTarifas Lista de TarifaNodoDto con los codigos DANE y valor de la tarifa a actualizar unicamente.
     * @param pCodTipoTarifa Codigo de la tarifa a actualizar
     * @param pCodNodo Codigo del nodo a actualizar
     * @throws com.src.computec.radar.base.dao.exception.DAOException 
     */
    public int deleteAllTarifaNodo(List pTarifas,String pCodTipoTarifa,String pCodNodo) throws DAOException{
       
        Connection con_ = null;
        PreparedStatement statement_ = null;
        
        int deletes_=0;

         try {
            con_ = getConnectionDB2();           
            statement_ = con_.prepareStatement("DELETE FROM "+SCHEMA+".TARIFA_NODO WHERE CODIGO_TIPO_TARIFA=? AND CODIGO_NODO=? AND CODIGO_DEPARTAMENTO =? AND CODIGO_MUNICIPIO=? AND CODIGO_CENTROP=?");            
        
            for(Iterator iter_=pTarifas.iterator();iter_.hasNext();){
                TarifaNodoDto dto_=(TarifaNodoDto)iter_.next();
                
                //CODIGO DANE 	
                if(dto_.getCodigoDane()!=null && !dto_.getCodigoDane().trim().equals("")){
                    int cod_=Integer.valueOf(dto_.getCodigoDane()).intValue();
                    Integer codDep_=cod_/1000000;
                    Integer codMun_=(cod_%1000000)/1000;
                    Integer codCentroP_=((cod_%1000000)%1000);
                   
              
                       
                    statement_.setObject(1,Integer.valueOf(pCodTipoTarifa));
                    statement_.setObject(2,Integer.valueOf(pCodNodo));
                    statement_.setObject(3,Integer.valueOf(codDep_));
                    statement_.setObject(4,Integer.valueOf(codMun_));
                    statement_.setObject(5,Integer.valueOf(codCentroP_));
                    int updaterows_=statement_.executeUpdate();           
                    deletes_=deletes_ +(updaterows_>0?updaterows_:0);                   
                   }
                }                                    
         }catch (SQLException e){
            e.printStackTrace();
            throw new DAOException("TarifaNodoDAO:deleteAllTarifaNodo: " + e.toString(), e);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        finally 
        {            
            closeConnection(con_, statement_);            
        }
       
        return deletes_;
    }
}
